剑指 Offer II 003. 前 n 个数字二进制中 1 的个数

给定一个非负整数 n ，请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数，并输出一个数组。


https://leetcode.cn/problems/w3tCBm/description/

int Getbit(int n)
{
    int count=0;
    while(n)
    {
        n&=n-1;
        count++;
    }
    return count;
}



int* countBits(int n, int* returnSize)
{
    *returnSize=n+1;
    int*ans=(int*)malloc(sizeof(int)*(*returnSize)); 
    for(int i=0;i<=n;i++)
    {
        ans[i]=Getbit(i);
    }
    return ans;
}


int* countBits(int n, int* returnSize)
{
    *returnSize=n+1;
    int*ans=(int*)calloc(*returnSize,4);
    for(int i=0;i<=n;i++)
    {
        ans[i]=ans[i>>1]+(i&1);
    }
    return ans;

}
